const state = {
    // { id: 商品id, count: 购买数量，selected: false  }
    car: getItem('car'),
  // 当前要购买的商品：buy: [{ id: '', count: '' }]
  // 当在购物车里点“去结算”时，就把购物车车中已经选中的商品放进去
    buy: getItem('buy')
  }
  const getters = {
    // 获取商品数量
  getGoodsCount (state) {
    var goods = {}
    state.car.forEach(item => {
      goods[item.id] = item.count 
    })
    return goods

  },

  // 获取商品有没有选中的状态值（selected）
  getGoodsSelected (state) {
    var goods = {}
    state.car.forEach(item => {
      goods[item.id] = item.selected
    })
    return goods
  },
  // 获取选中的商品的件数
  getSelectedCount (state) {
    var count = 0
    state.car.forEach(item => {
      if (item.selected) {
        count += item.count
      }
    })
    return count
  },
  // 获取选中的商品
  getSelectedGoods (state) {
    var goods = {}
    state.car.forEach(item => {
      if (item.selected) {
        goods[item.id] = item
      }
    })
    return goods
  },
  // 获取要购买的商品
  getBuy (state) {
    var goods = {}
    state.buy.forEach(item => {
      goods[item.id] = item
    })
    return goods
  },
  // 获取商品有没有选中的状态值（selected）
  getGoodsSelected (state) {
    var goods = {}
    state.car.forEach(item => {
      goods[item.id] = item.selected
    })
    return goods
  },
  // 获取选中的商品的件数
  getSelectedCount (state) {
    var count = 0
    state.car.forEach(item => {
      if (item.selected) {
        count += item.count
      }
    })
    return count
  },
  // 获取选中的商品
  getSelectedGoods (state) {
    var goods = {}
    state.car.forEach(item => {
      if (item.selected) {
        goods[item.id] = item
      }
    })
    return goods
  },
  // 获取要购买的商品
  getBuy (state) {
    var goods = {}
    state.buy.forEach(item => {
      goods[item.id] = item
    })
    return goods
  }


  }
  const actions = {}
  const mutations = {
    addCar (state, goodsinfo) {
        var flag = false
        state.car.some(item => {
          if (item.id == goodsinfo.id) {
            item.count += parseInt(goodsinfo.count)
            flag = true
            return true
          }
        })
        if (!flag) {
          state.car.push(goodsinfo)
        }
        setItem('car', state.car)
      },
      updateGoodsInfo (state, goodsinfo) {
        state.car.some(item => {
          if (item.id == goodsinfo.id) {
            item.count = parseInt(goodsinfo.count)
            return true
          }
        })
        setItem('car', state.car)
      },
      updateGoodsSelected (state, info) {
        state.car.some(item => {
          if (item.id == info.id) {
            item.selected = info.selected
          }
        })
        setItem('car', state.car)
      },
      removeCar (state, id) {
        state.car.some((item, i) => {
          if (item.id == id) {
            state.car.splice(i, 1)
            return true
          }
        })
      setItem('car', state.car)
      },
      setBuy (state, goods) {
        state.buy = []
        if (goods) {
          state.buy.push(goods)
        } else {
      
        state.car.some(item => {
          if (item.selected) {
            state.buy.push(item)
          }
        })
      }
        setItem('buy', state.buy)
      }
    
    
  }
  
  export default {
    namespaced: true,
    state,
    getters,
    actions,
    mutations
  }
  function setItem(name, item) {
    localStorage.setItem(name, JSON.stringify(item))
  }
  function getItem(name) {
    return JSON.parse(localStorage.getItem(name) || '[]')
  }
  
  